Group hk-config with hk in shared Renovate preset - #390
Conversation
hk-config's Defaults.pkl is built against a specific hk Config/Builtins version, and a consumer's hk.pkl pins hk twice (the amends URL and the mise binary), so bumping either alone leaves a broken intermediate state. Both bumps also edit hk.pkl, forcing the second PR to rebase. Match on the depName the hk-config customManager emits rather than the source URL — gtbuchanan/tooling also publishes @gtbuchanan/cli, which must stay out of the hk group. Closes #334
📝 WalkthroughWalkthroughThe shared Renovate preset now groups Changeshk Renovate grouping
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@default.json`:
- Around line 55-64: Preserve the three-day quarantine for hk-config by updating
the own-package rule that currently assigns it minimumReleaseAge "0 days";
exclude hk-config from that exception or restore its minimumReleaseAge to three
days, while leaving the hk grouping rule unchanged.
- Around line 55-64: Complete Termux validation for the hk dependency group
configuration identified by groupName "hk" and matchDepNames "hk-config": place
the Termux pkl wrapper on PATH, resolve the spawn pkl ENOENT failure, and rerun
all required validation checks before merging.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 3b292849-ba31-4fe3-9402-8ab4ba9983ee
📒 Files selected for processing (3)
.changeset/group-hk-config-with-hk.mdAGENTS.mddefault.json
🔗 Linked repositories identified
CodeRabbit considers these linked repositories for cross-repo context during reviews:
gtbuchanan/tooling(manual)
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
.changeset/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Every pull request must include a changeset listing affected packages and bump types, or an empty changeset for changes that do not affect published packages.
Files:
.changeset/group-hk-config-with-hk.md
**/*
📄 CodeRabbit inference engine (AGENTS.md)
Run
pnpm build,pnpm test:slow, andpnpm test:e2ewith--concurrency=1on Termux to avoid out-of-memory failures.
Files:
AGENTS.mddefault.json
default.json
📄 CodeRabbit inference engine (AGENTS.md)
Maintain the shared Renovate preset's supply-chain settings, including a three-day minimum release age, OSV vulnerability alerts, and dependency review-compatible license policy.
Files:
default.json
🧠 Learnings (1)
📚 Learning: 2026-06-17T04:54:26.509Z
Learnt from: gtbuchanan
Repo: gtbuchanan/tooling PR: 183
File: .changeset/mise-release-age-excludes.md:4-4
Timestamp: 2026-06-17T04:54:26.509Z
Learning: In the gtbuchanan/tooling repo, `.changeset/*.md` files should intentionally omit the Markdown H1 heading (MD041). Follow the changesets CLI convention: `frontmatter` followed by a blank line and then a plain summary text line. Do not prepend the summary with `# `, because the changesets CLI consumes that summary verbatim as the CHANGELOG entry; adding `# ` would introduce an unwanted stray H1 into the generated changelog. MD041 is not enforced by the repo’s `eslint-markdownlint` config for these files; any MD041 warnings for `.changeset/*.md` come from markdownlint-cli2 defaults rather than the repo’s own lint configuration.
Applied to files:
.changeset/group-hk-config-with-hk.md
🪛 markdownlint-cli2 (0.23.2)
.changeset/group-hk-config-with-hk.md
[warning] 4-4: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🔇 Additional comments (2)
AGENTS.md (1)
450-463: LGTM!.changeset/group-hk-config-with-hk.md (1)
1-5: LGTM!
Closes #334
@gtbuchanan/hk-configandhkare mutually coupled:Defaults.pklis built against a specific hkConfig/Builtinsversion, and a consumer'shk.pklpins hk twice — theamendsURL and the mise-installed binary. Splitting the bumps into separate PRs produces intermediate states that break in both directions (a newer hk binary rejecting the older preset; a newer preset targeting schema/hook behavior the pinned binary lacks), and both PRs edithk.pkl, so whichever merges first forces the other to rebase.This is live in
gtbuchanan/dotfilesright now — #64 (hk v1.54.1) and #117 (hk-config v0.2.3) are both open and can't be merged independently.Why the shared preset rather than each consuming repo
The dep only exists because the shared preset's
hk-configcustomManagersynthesizes it, so the rule governing how it's batched belongs alongside the manager that creates it. The coupling is a property of the two packages, not a per-repo update-policy preference — there's no consumer for whom separate PRs are the better outcome. Per-repo placement would also fail silently: a new hk-config adopter gets two unmergeable PRs and only discovers why at merge time.Matcher choice
Matched on
depName: hk-config(what thecustomManager'sdepNameTemplateemits — confirmed by thedotfilesPR titles/branches above), narrowed bymatchDatasources: ["github-releases"]so it can't collide with a same-named npm dep in a consumer.Note the issue proposed
matchDepNames: ["@gtbuchanan/hk-config"], which would match nothing — hk-config is private to npm, so the scoped name never appears as a dep.matchSourceUrlsis also unusable, as the issue called out:gtbuchanan/toolingresolves for@gtbuchanan/clitoo, which must stay out of the hk group.Caveats
hk.pklconflict, and it lets one CI run validate the real combination.hk-configmatches the own-packagesminimumReleaseAge: "0 days"rule viagtbuchanan/tooling;hkkeeps the global three days), so therenovate/hkbranch can open with only the eligible member and pick up the other later. NominimumReleaseAgevalue fixes this — equalizing the threshold just inverts which member arrives first, since hk-config is normally released after hk. The lever isinternalChecksFilter: "strict", a preset-wide change tracked separately.hkbranch; they only combine when both are pending.Defaults.pklby relative path and so has nohk-configdep to bump.Validated with
renovate-config-validator --strictagainstdefault.jsonand.github/renovate.json.🤖 Generated with Claude Code